import {
  defineConfig,
  loadEnv,
} from "vite";
import path from "path";
import createVitePlugins from "./vite/plugins";
import vue from "@vitejs/plugin-vue";
import electron from "vite-plugin-electron";
const baseUrl =
  "https://localhost:44326"; // 后端接口

// https://vitejs.dev/config/
export default defineConfig(
  ({ mode, command }) => {
    const env = loadEnv(
      mode,
      process.cwd()
    );
    const { VITE_APP_ENV } = env;
    return {
      // 部署生产环境和开发环境下的URL。
      // 默认情况下，vite 会假设你的应用是被部署在一个域名的根路径上
      // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上，你就需要用这个选项指定这个子路径。例如，如果你的应用被部署在 https://www.ruoyi.vip/admin/，则设置 baseUrl 为 /admin/。
      base:
        VITE_APP_ENV === "production"
          ? "/"
          : "/",
      plugins: [
        createVitePlugins(
          env,
          command === "build"
        ),
        electron({
          // 主进程入口文件
          entry: "background.js",
        }),
      ],
      resolve: {
        // https://cn.vitejs.dev/config/#resolve-alias
        alias: {
          // 设置路径
          "~": path.resolve(
            __dirname,
            "./"
          ),
          // 设置别名
          "@": path.resolve(
            __dirname,
            "./src"
          ),
        },
        // https://cn.vitejs.dev/config/#resolve-extensions
        extensions: [
          ".mjs",
          ".js",
          ".ts",
          ".jsx",
          ".tsx",
          ".json",
          ".vue",
        ],
      },
      // 打包配置
      build: {
        // https://vite.dev/config/build-options.html
        sourcemap:
          command === "build"
            ? false
            : "inline",
        outDir: "dist",
        assetsDir: "assets",
        chunkSizeWarningLimit: 2000,
        rollupOptions: {
          output: {
            chunkFileNames:
              "static/js/[name]-[hash].js",
            entryFileNames:
              "static/js/[name]-[hash].js",
            assetFileNames:
              "static/[ext]/[name]-[hash].[ext]",
          },
        },
      },
      // vite 相关配置
      server: {
        port: 3003,
        host: true,
        open: true,
        proxy: {
          // 现有的 /dev-api 代理
          "/dev-api": {
            target: baseUrl,
            changeOrigin: true,
            secure: false,
            rewrite: (path) =>
              path.replace(
                /^\/dev-api/,
                ""
              ),
          },

          // 添加Swagger文档的代理
          "/api-doc": {
            target: baseUrl,
            changeOrigin: true,
            secure: false,
            // 不需要重写路径，因为我们想要保持 /api-doc 前缀
          },

          // springdoc proxy（如果需要）
          "^/v3/api-docs/(.*)": {
            target: baseUrl,
            changeOrigin: true,
            secure: false,
          },
        },
      },
      css: {
        postcss: {
          plugins: [
            {
              postcssPlugin:
                "internal:charset-removal",
              AtRule: {
                charset: (atRule) => {
                  if (
                    atRule.name ===
                    "charset"
                  ) {
                    atRule.remove();
                  }
                },
              },
            },
          ],
        },
      },
    };
  }
);
